#################################################
## Protocols And Log Formats
#

# Define which protocol you want to support

# Instant Messaging protocols
DEFINES += -DMSN_CLASSIFIER
DEFINES += -DYMSG_CLASSIFIER
DEFINES += -DXMPP_CLASSIFIER
# Classical VoIP and media straming protocols
DEFINES += -DRTSP_CLASSIFIER
DEFINES += -DRTP_CLASSIFIER
# Bayesian Skype classification
DEFINES += -DSKYPE_CLASSIFIER
# DPI classification, mainly for P2P protocols, but also DNS and UDP tunneling
DEFINES += -DP2P_CLASSIFIER

#BitTorrent
#DEFINES += -DBITTORRENT_CLASSIFIER
# Payload based video classification: it requires at least 600 bytes in 
# the packet payload for optimal performance
DEFINES += -DSTREAMING_CLASSIFIER

# define P2P_DETAILS to extend the UDP P2P information logging,
# classifying all packets of the UDP flows and reporting per-protocol
# information in log_udp_complete
# DEFINES += -DP2P_DETAILS

# Define this if you want to support traces larger than 2G on linux
# using ext2fs
# Don't know from which version of glibc/kernel/distribution works...
DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE

# define LOG_OOO to get a complete log of all tcp anomalies. This will
# create a log file named dup_ooo logging all the out of sequence/
# duplicate segment observed. PLease, look at the code in rexmit.c to get
# more details
# DEFINES += -DLOG_OOO

# define LOG_UNKNOWN to log of all TCP and UDP flows, even if they are not correctly
# identified as either incoming of outgoing. *WARNING* The *_loc statistics 
# will include both local (internal) and external traffic.
#DEFINES += -DLOG_UNKNOWN

# define LOG_HALFDUPLEX to log complete data about TCP half-duplex connections
# in log_tcp_nocomplete. Normally half-duplex connections (SYN+ACK missing)
# are immediately closed and logged
#DEFINES += -DLOG_HALFDUPLEX

# define L3_BITRATE to log the IP datagram bitrate in file log_l3_bitrate 
# with frequency controlled by L3_BITRATE_DELTA (default 10s). The same
# information is collected with lower frequency (5 min) by the histograms 
# 'ip_bitrate_xxx' (index 1). The log creation is controlled by option -3
#DEFINES += -DL3_BITRATE

# define LOG_ALL_UDP to log all udp flow pairs in log_udp_complete. By default
# only P2P related flows (as identified by the IPP2P engine) are logged.
DEFINES += -DLOG_ALL_UDP

# define WIPE_TCP_SINGLETONS to increase the garbage collection frequency
# for TCP flows for which only SYN segments have been registered (controlled
# by TCP_SINGLETON_TIME)
DEFINES += -DWIPE_TCP_SINGLETONS

# define WIPE_UDP_SINGLETONS to increase the garbage collection frequency
# for UDP flows for which a single datagram has been registered (controlled
# by UDP_SINGLETON_TIME)
DEFINES += -DWIPE_UDP_SINGLETONS

# define SUPPORT_IPV6 if you want to compile IPv6 support
# DEFINES += -DSUPPORT_IPV6

# define MEMDEBUG to get memory allocation statistics when
# receiving a SIGUSR1
# DEFINES += -DMEMDEBUG

# define DEBUG_THREAD to print some information about thread managements
# DEFINES += -DDEBUG_THREAD_UTP
# DEFINES += -DDEBUG_THREAD

# define USE_MEMCPY to copy the content of the libpcap buffer in a local
# buffer instead of accessing directly the libpcap buffer 
# Must be defined if libpcap is linked to use a shared memory buffer
DEFINES += -DUSE_MEMCPY

# define VIDEO_DETAILS to collect details on the video flows, mostly 
# YouTube data. It needs at least 450 bytes in the 
# packet payload
DEFINES += -DVIDEO_DETAILS
# define *also* HIDE_YOUTUBE_REQUEST_ID to hide the 11-chars public 
# YouTube video ID (possible major privacy issues)
# DEFINES += -DVIDEO_DETAILS -DHIDE_YOUTUBE_REQUEST_ID
# define *also* VIDEO_LOG_ONLY to inhibit the logging of UDP flows and
# of non-video TCP flows 
# DEFINES += -DVIDEO_DETAILS -DVIDEO_LOG_ONLY

# define PACKET_STATS to get detailed statistics on the first segments in 
# TCP flows
# DEFINES += -DPACKET_STATS



################################################################## 
## Compression support
# 
# 1) If your system has "gunzip", then uncomment the following line to
#    support on-the-fly decompression of ".gz" and ".Z" files...
DEFINES += -DGUNZIP="\"gunzip\""
# 2) Otherwise, if your system supports standard Unix "uncompress",
#    then uncomment the following line to support on-the-fly
#    decompression of ".Z" files...
#DEFINES += -DUNCOMPRESS="\"uncompress\""
# 3) Also, we assume most systems have the "bunzip2" utility installed,
#    if yours doesn't, you'll want to comment out the next line.
# 4) The same for "7z" utility,
#    if yours doesn't, you'll want to comment out the next line.
DEFINES += -DZ7Z="\"Z7z\""
# - we'll do path search on the string you specify.  If the program
#    isn't in your path, you'll need to give the absolute path name.
# - if you want other formats, see the "compress.h" file.


################################################################## 
# 
# File formats that we understand.
# The only reason that I can see to remove one is if you don't
# have the PCAP library, in which case you can comment out
# GROK_TCPDUMP and still compile, but then you can't read the
# output from tcpdump.
# 
# define GROK_SNOOP if you want tstat to understand the output
# format of Sun's "snoop" packet sniffer.
DEFINES += -DGROK_SNOOP
# define GROK_TCPDUMP if you want tstat to understand the output
# format format of the LBL tcpdump program (see the file README.tcpdump
# for other options)
DEFINES += -DGROK_TCPDUMP
# define GROK_NETM if you want tstat to understand the output
# format of HP's "netm" monitoring system's packet sniffer.
DEFINES += -DGROK_NETM
# define GROK_ETHERPEEK if you want tstat to understand the output
# format of the Macintosh program Etherpeek
DEFINES += -DGROK_ETHERPEEK
# define GROK_NS if you want tstat to understand the output
# format of the LBL network simulator, ns
DEFINES += -DGROK_NS
# define GROK_NLANR if you want tstat to understand the output
# format of the various NLANL tools
# (this doesn't work well yet, not recommended - Sat Dec 19, 1998)
# DEFINES += -DGROK_NLANR
# define GROK_NETSCOUT if you want tstat to understand ascii
# formatted netscout output files
DEFINES += -DGROK_NETSCOUT
# define GROK_ERF if you want tstat to understand the output
# format of the Endace Technology dagsnap program */
DEFINES += -DGROK_ERF
# define GROK_DAG if you want tstat to understand the output
# format of the DAG tool
#DEFINES += -DGROK_DAG
# define GROK_LIVE_TCPDUMP for live capturing with pcap library
DEFINES += -DGROK_LIVE_TCPDUMP
# define GROK_ERF_LIVE for live capturing with Endace DAG cards
#DEFINES += -DGROK_ERF_LIVE
# Add the location of the include and lib files.
#DAGAPI_LDFLAGS = -ldag 
# define GROK_DPMI if you want tstat to understand the output
# format of DPMI packet.
#DEFINES += -DGROK_DPMI
#DPMI_LDFLAGS = -LDPMI_utils/
#DPMI_LDLIBS= -ldpmi



#//<aa>
################################################################## 
## Bufferbloat analysis: general settings
# 
DEFINES += -DBUFFERBLOAT_ANALYSIS

#While ack triggered bufferbloat analysis is mandatory, data triggered 
#bufferbloat analysis is optional and can be enabled by this constant.
#DEFINES += -DDATA_TRIGGERED_BUFFERBLOAT_ANALYSIS

#If it is defined, some functions will be forced to be inlined
#(see http://www.greenend.org.uk/rjk/tech/inline.html)
#This should lead to a faster running time but also to a larger
#object code size. Disable it if your compiler does not support
#call inlining
#DEFINES += -DFORCE_CALL_INLINING

#If FILTERING is enabled, tstat will use rollover and other 
#ledbat-inspired stuff to compute the basedelay. Otherwise, the base delay is
#simply the minimum over all gross delays
#DEFINES += -DFILTERING

################################################################## 
## Bufferbloat analysis: debug options
# 
#  If it is defined, a lot of redundant and overabundant checks will be performed to 
# check for inconsistent states or data. This can be useful when you edit the code to be
# sure that the modifications do not produce those inconcistencies</aa>
#DEFINES += -DSEVERE_DEBUG

#If it is defined, tstat will perform the calculations to check how many pkts are used
#for bufferbloat analysis and how many must be ignored
#DEFINES += -DSAMPLES_VALIDITY

#If it is defined, the logs with all the queueing delay samples will be produced
#(in addition to the windowed logs). Otherwise, only the windowed queueing delay
#log files will be produced;
#DEFINES += -DSAMPLE_BY_SAMPLE_LOG

#If you are sure you are monitoring only one flow
#DEFINES += -DONE_FLOW_ONLY

#//</aa>
